package com.cj.startup

import java.util.concurrent.Executor

interface Dispatcher {

    /**
     * 是否在主线程运行
     */
    fun callCreateOnMainThread():Boolean

    /**
     * 每个任务都可以指定自己执行在哪个线程
     */
    fun executor():Executor

    /**
     * 执行线程的优先级
     */
    fun getThreadPriority():Int

    /**
     * 等待
     */
    fun toWait()

    /**
     * 有父任务执行完毕，计数器-1
     */
    fun toNotify()

    /**
     * 是否需要主线程等待该任务执行完成
     * 只有在callCreateOnMainThread方法返回false才有意义
     */
    fun waitOnMainThread():Boolean

}